home *** CD-ROM | disk | FTP | other *** search
/ CICA 1995 September (Japanese) / CICA Shareware for Windows CD-ROM (Walnut Creek) (September 1995) (Japanese) (Disc 2).iso / disc2 / patches / symantec / mfcsim.exe / SIMNEW.EXE / MFC / SAMPLES / CALC / CALC.WMC < prev    next >
Encoding:
Text File  |  1993-10-06  |  10.6 KB  |  405 lines

  1. // Filename: CALC.WMC                                       
  2. // "CALC" Generated by Visual Programmer.                   
  3. // Author:   Blue Sky                                       
  4.  
  5. // 
  6. // ***********************************************************************
  7. // Do not add code here. Add code in the .CPP file.
  8. // 
  9. // This file is maintained by the Switch-It Module.
  10. // As you make changes in your applications design,
  11. // this file is automatically updated, therefore you never modify this file.
  12. // 
  13. // 
  14. // 
  15. // For more information,
  16. // see the section "How code is generated" in the documentation.
  17. // 
  18. // ***********************************************************************
  19. // 
  20.  
  21. // *************************************************************
  22. //                GLOBAL VARIABLES
  23. // *************************************************************
  24.  
  25. BOOL      bHelpSupport   = FALSE; // Controlling Help Support
  26. DWORD     dwDialogProp   = 0; // Controlling Dialog Box Color
  27. BOOL      b256Color      = TRUE;  // Controlling bitmap drawing
  28. BOOL      bPreCreateCheck= TRUE;  // Controlling PreCreateWindow handling
  29. HINSTANCE hBMPInst       = 0;     // Handle to instance for bitmaps
  30. UINT      wPrivateMessage= RegisterWindowMessage("BLDPrivateMessage");
  31.  
  32.  
  33.  
  34.  
  35.  
  36. // *************************************************************
  37. // Member Functions for Class: Cwm_BaseApplication
  38. // Base Class                : CWinApp
  39. // *************************************************************
  40.  
  41.  
  42. BEGIN_MESSAGE_MAP(Cwm_BaseApplication, CWinApp)
  43.     
  44.     //  Processing of linked menu items in menu: CALC  
  45.     
  46. END_MESSAGE_MAP()
  47.  
  48.  
  49. Cwm_BaseApplication::Cwm_BaseApplication (const char* pName)
  50.     : CWinApp (pName)
  51. {
  52.     pWndClient = NULL;
  53. }
  54.  
  55.  
  56. BOOL Cwm_BaseApplication::InitApplication()
  57. {
  58.  
  59.     return CWinApp::InitApplication();
  60. }
  61.  
  62.  
  63.  
  64. BOOL Cwm_BaseApplication::InitInstance()
  65. {
  66.     OFSTRUCT of;
  67.     int      len;
  68.     char     *pStr;
  69.  
  70.     if(dwDialogProp&BLDGRAY_DIALOGBOX)
  71.         SetDialogBkColor();     
  72.  
  73.     // Create the main window
  74.     Cwm_MainWnd*  ms_pMainUserWnd;
  75.     ms_pMainUserWnd   = BLDMainCreateWnd(NULL);
  76.     m_pMainWnd        = ms_pMainUserWnd;
  77.  
  78.  
  79.     ::GetModuleFileName(AfxGetInstanceHandle(),ms_szHelpFilePath,sizeof(ms_szHelpFilePath));
  80.     len=lstrlen(ms_szHelpFilePath);
  81.     for (pStr=&ms_szHelpFilePath[len-1];pStr>ms_szHelpFilePath;--pStr)
  82.         {
  83.         if (*pStr=='\\')
  84.             {
  85.             pStr++;
  86.             lstrcpy(pStr,"CALC.HLP");
  87.             if (!::OpenFile(ms_szHelpFilePath,&of,OF_EXIST)!=-1)
  88.                 {
  89.                 lstrcpy(ms_szHelpFilePath,"CALC.HLP");
  90.                 }
  91.             break;
  92.             }         
  93.         }
  94.     m_pszHelpFilePath = ms_szHelpFilePath;
  95.  
  96.  
  97.     return CWinApp::InitInstance();
  98. }
  99.  
  100.  
  101.  
  102. int Cwm_BaseApplication::ExitInstance()
  103. {
  104.  
  105.     return CWinApp::ExitInstance();
  106. }
  107.  
  108.  
  109.  
  110. //No help support, return FALSE
  111. BOOL Cwm_BaseApplication::MenuHelp(DWORD dwData)
  112.     {
  113.     return FALSE;
  114.     }
  115.  
  116.  
  117.  
  118. // *************************************************************
  119. // Member Functions for Class: Cwm_MainBaseWnd
  120. // Base Class                : CFrameWnd
  121. // *************************************************************
  122.  
  123.  
  124. CString Cwm_MainBaseWnd::ms_strWndClass; //Window Class Name
  125.  
  126.  
  127. IMPLEMENT_DYNCREATE(Cwm_MainBaseWnd, CFrameWnd)
  128.  
  129. BEGIN_MESSAGE_MAP(Cwm_MainBaseWnd, CFrameWnd)
  130.  
  131.     ON_REGISTERED_MESSAGE(wPrivateMessage,SimHandlePrivateMessage)
  132.     ON_WM_CREATE()
  133.  
  134. END_MESSAGE_MAP()
  135.  
  136.  
  137.  
  138. Cwm_MainBaseWnd::Cwm_MainBaseWnd()
  139.     : CFrameWnd()
  140. {
  141.  
  142.     ms_pToolbarTop= ms_pToolbarBottom=ms_pToolbarLeft=ms_pToolbarRight=NULL;
  143.     ms_pWndClient = NULL;
  144.  
  145.  
  146.     if (ms_strWndClass.IsEmpty())
  147.        SimRegisterClass();
  148.  
  149. }
  150.  
  151.  
  152.  
  153. Cwm_MainBaseWnd::~Cwm_MainBaseWnd()
  154. {
  155. }
  156.  
  157.  
  158.  
  159. BOOL Cwm_MainBaseWnd::SimRegisterClass()
  160. {
  161.     WNDCLASS    WndClass;
  162.  
  163.     WndClass.lpszClassName = "BLD_Main";
  164.     WndClass.style         = CS_DBLCLKS;
  165.     WndClass.cbClsExtra    = 0;
  166.     WndClass.cbWndExtra    = 0;
  167.     WndClass.hInstance     = AfxGetInstanceHandle();
  168.     WndClass.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
  169.     WndClass.hCursor       = LoadCursor(NULL,IDC_ARROW);
  170.     WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  171.     WndClass.lpszMenuName  = NULL;
  172.  
  173.     if (!ms_strWndClass.IsEmpty())
  174.         return TRUE;                      // Already registered
  175.  
  176.     ms_strWndClass = AfxRegisterWndClass(WndClass.style,
  177.        WndClass.hCursor, WndClass.hbrBackground, WndClass.hIcon);
  178.  
  179.     if (ms_strWndClass.IsEmpty())
  180.         return FALSE;
  181.     else
  182.         return TRUE;
  183. }
  184.  
  185.  
  186.  
  187. BOOL Cwm_MainBaseWnd::SimInitWindow(CWnd *pAParent)
  188. {
  189.     CREATESTRUCT        sCr;
  190.  
  191.     if (ms_strWndClass.IsEmpty())
  192.        return FALSE;
  193.  
  194.     sCr.lpCreateParams  = NULL;
  195.     sCr.hInstance       = AfxGetInstanceHandle();
  196.     sCr.dwExStyle       = 0;
  197.     sCr.lpszClass       = ms_strWndClass;
  198.     sCr.lpszName        = "Calculator";
  199.     sCr.style           = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_OVERLAPPED;
  200.     sCr.hwndParent      = pAParent ? pAParent->GetSafeHwnd() : (HWND)NULL;
  201.     sCr.x               = CW_USEDEFAULT;
  202.     sCr.y               = 0;
  203.     sCr.cx              = CW_USEDEFAULT;
  204.     sCr.cy              = 0;
  205.     sCr.hMenu           = NULL;
  206.  
  207.     BOOL                bRet;
  208.  
  209.     if (sCr.cx==CW_USEDEFAULT)
  210.         {
  211.         bRet            = Create(ms_strWndClass,sCr.lpszName,sCr.style,
  212.                                  rectDefault,pAParent,NULL,sCr.dwExStyle);
  213.         }
  214.     else
  215.         {
  216.         RECT            r;
  217.  
  218.         r.left          = sCr.x;
  219.         r.top           = sCr.y;
  220.         r.right         = sCr.cx+sCr.x;
  221.         r.bottom        = sCr.cy+sCr.y;
  222.  
  223.         bRet            = Create(ms_strWndClass,sCr.lpszName,sCr.style,
  224.                                  r,pAParent,NULL,sCr.dwExStyle);
  225.         }
  226.  
  227.     if (!bRet)
  228.         {
  229.         BLDDisplayMessage(::GetActiveWindow(),BLD_CannotCreateWindow,"Main",
  230.                           MB_OK | MB_ICONASTERISK);
  231.         return FALSE;
  232.         }
  233.  
  234.     ShowWindow(TheApp.m_nCmdShow);
  235.     UpdateWindow();
  236.  
  237.     return TRUE;
  238. }
  239.  
  240.  
  241. // PreCreateWindow - overridden for window to get correct properties
  242. BOOL Cwm_MainBaseWnd::PreCreateWindow(CREATESTRUCT& sCr)
  243. {
  244.     if (!sCr.lpszClass&&bPreCreateCheck)
  245.         {
  246.         sCr.dwExStyle   = 0;
  247.         sCr.lpszClass   = ms_strWndClass;
  248.         sCr.lpszName    = "Calculator";
  249.         sCr.style       = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_OVERLAPPED;
  250.  
  251.         if (sCr.hMenu&&::IsMenu(sCr.hMenu))
  252.             ::DestroyMenu(sCr.hMenu);
  253.         sCr.hMenu       = 0;
  254.  
  255.         }
  256.     return CFrameWnd::PreCreateWindow(sCr);
  257. }
  258.  
  259.  
  260.  
  261. int Cwm_MainBaseWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
  262. {
  263.  
  264.     BLD_CALCClientClFunc(this);
  265.     return CFrameWnd::OnCreate(lpCreateStruct);
  266. }
  267.  
  268.  
  269.  
  270. LRESULT Cwm_MainBaseWnd::SimHandlePrivateMessage(WPARAM wParam,LPARAM lParam)
  271. {
  272.     LPBLDSetChildDialog lpSetChildDialog;
  273.     switch(wParam)
  274.         {
  275.     case SIM_GETCHILDDIALOG:
  276.         switch(LOWORD(lParam))
  277.             {
  278.         case 0: //Client area controls
  279.             return (LRESULT)(LPSTR)(CSimClientDlg*)ms_pWndClient;
  280.         case CBRS_RIGHT:
  281.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarRight;
  282.         case CBRS_LEFT:
  283.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarLeft;
  284.         case CBRS_BOTTOM:
  285.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarBottom;
  286.         case CBRS_TOP:
  287.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarTop;
  288.             }
  289.         break;
  290.     case SIM_SETCHILDDIALOG:
  291.         lpSetChildDialog = (LPBLDSetChildDialog)lParam;
  292.         switch(lpSetChildDialog->nStyle)
  293.             {
  294.         case 0: //Client area controls
  295.             ms_pWndClient     = (CSimClientDlg*)lpSetChildDialog->pWnd;
  296.             break;
  297.         case CBRS_RIGHT:
  298.             ms_pToolbarRight  = (CSimToolbar*)lpSetChildDialog->pWnd;
  299.             break;
  300.         case CBRS_LEFT:
  301.             ms_pToolbarLeft   = (CSimToolbar*)lpSetChildDialog->pWnd;
  302.             break;
  303.         case CBRS_BOTTOM:
  304.             ms_pToolbarBottom = (CSimToolbar*)lpSetChildDialog->pWnd;
  305.             break;
  306.         case CBRS_TOP:
  307.             ms_pToolbarTop    = (CSimToolbar*)lpSetChildDialog->pWnd;
  308.             break;
  309.             }
  310.         break;
  311.     case SIM_RELOADACCELERATORS:
  312.         break;
  313.     case SIM_LOADACCELTABLE:
  314.         if(m_hAccelTable)
  315.             m_hAccelTable=0;
  316.         if(lParam)
  317.             LoadAccelTable(MAKEINTRESOURCE((int)lParam));
  318.         break;
  319.         }
  320.     return 0;
  321. }
  322.  
  323.  
  324. // *************************************************************
  325. //        FUNCTION FOR SWITCHING MENU SET
  326. // *************************************************************
  327.  
  328. BOOL BLDSwitchMenu(CWnd *pWnd,char *pTemplateName)
  329.     {
  330.     HMENU       hMenu1,hMenu,hSubMenu;
  331.     DWORD       style;
  332.  
  333.     hMenu       = 0;
  334.     hSubMenu    = 0;
  335.     
  336.     style = pWnd->GetStyle();
  337.     if((style & WS_CHILD) == WS_CHILD)     //  Called from control in main window? 
  338.         {
  339.         pWnd=pWnd->GetParent();
  340.         if (!pWnd)
  341.             return FALSE;
  342.         style = pWnd->GetStyle();
  343.         if((style & WS_CHILD) == WS_CHILD) //  No menu in a WS_CHILD window.
  344.             return FALSE;
  345.         }
  346.     if((style & WS_CAPTION) != WS_CAPTION) //  No menu if no caption.
  347.         return FALSE;
  348.     
  349.     hMenu1 = pWnd->GetMenu()->GetSafeHmenu();
  350.  
  351.     if (lstrcmpi(pTemplateName,"CALC")==0)
  352.         hMenu = BLDLoadMenu(pWnd,IDR_CALC,&hSubMenu,TRUE);
  353.  
  354.     if (!hMenu)
  355.         hMenu = LoadMenu(AfxGetResourceHandle(),pTemplateName);
  356.     if (!hMenu)
  357.         {
  358.         BLDDisplayMessage(pWnd->GetSafeHwnd(),BLD_CannotLoadMenu,pTemplateName,
  359.                           MB_OK | MB_ICONASTERISK);
  360.         return FALSE;
  361.         }
  362.     
  363.     if (!pWnd->SetMenu(CMenu::FromHandle(hMenu)))
  364.         return FALSE;
  365.     if (hMenu1)
  366.         DestroyMenu(hMenu1);
  367.     
  368.     pWnd->DrawMenuBar();
  369.     return TRUE;
  370.     }
  371.  
  372.  
  373. //  Code to load menu and add bitmaps
  374. HMENU BLDLoadMenu(CWnd *pWnd,int iResource,HMENU *phSubMenu,BOOL bLoad)
  375.     {
  376.     HMENU       hMenu;
  377.  
  378.     *phSubMenu  = 0;
  379.     if (bLoad)
  380.         hMenu   = LoadMenu(AfxGetResourceHandle(),MAKEINTRESOURCE(iResource));
  381.     else
  382.         {
  383.         if (!pWnd)
  384.             return FALSE;
  385.         hMenu   = pWnd->GetMenu()->GetSafeHmenu();
  386.         }
  387.  
  388.     if(!hMenu)
  389.         return FALSE;
  390.  
  391.  
  392.     if (pWnd)
  393.         BLDLoadAccelerators(pWnd,iResource);
  394.  
  395.     return hMenu;
  396.     }
  397.  
  398.  
  399. //  Code to load accelerators
  400. BOOL BLDLoadAccelerators(CWnd *pWnd,int iResource)
  401.     {
  402.  
  403.     return TRUE;
  404.     }
  405.